#include "process.h"
#include <string.h>
#include <unistd.h>

#define NUM 101
#define STYLE '='

//version2
void FlushProcess(double current, double total)
{
    // 1. 更新当前进度条的百分比
    double rate = (current / total) * 100;
    //printf("%.1lf%%/%.1lf\r", rate*100, total);
    //fflush(stdout);
    
    // 2. 更新进度条主体 1% 更新一个等号
    char bar[NUM];
    memset(bar, '\0', sizeof(bar));
    for(int i = 0; i < (int)rate; i++)
    {
        bar[i] = STYLE;
    }
    
    // 3. 更新旋转光标或其他风格
    const char* label = "|/-\\";
    static int num = 0;
    num++;
    int len = strlen(label);
    num %= len;

    printf("[%-100s] [%.1lf%%][%c]\r", bar, rate, label[num]);
    fflush(stdout);
 }



// version1
//#define NUM 101
//#define STYLE1 '#'
//#define STYLE2 '='
//#define STYLE3 '*'
//
//void proce()
//{
//    int cnt = 0;
//    char bar[NUM];
//    memset(bar, '\0',sizeof(bar));
//    char label[] = {'|','/','-','\\'};
//    int len = strlen(label);
//
//    while(cnt <= 100)
//    {
//        printf("[%-100s] [%d%%] [%c] \r",bar, cnt, label[cnt%len]);
//        fflush(stdout); //强制刷新缓冲区
//
//        bar[cnt++] = STYLE2;
//        if(cnt == NUM)
//        {
//            bar[cnt-1] = '\0';
//            printf("[%-100s] [%d%%] [%c] \r",bar, cnt-1, label[cnt%len]);
//            break;
//        }
//
//        bar[cnt] = '>';
//        usleep(50000);
//    }
//    printf("\n\r");
//}
